home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Extensions / Imaging / Scripts / thresholder.py < prev    next >
Encoding:
Python Source  |  2000-06-23  |  1.5 KB  |  69 lines

  1. #
  2. # The Python Imaging Library
  3. # $Id: thresholder.py,v 1.1.1.1 1998/08/18 13:07:58 sjoerd Exp $
  4. #
  5. # this demo script illustrates how a 1-bit BitmapImage can be used
  6. # as a dynamically updated overlay
  7. #
  8.  
  9. from Tkinter import *
  10. import Image, ImageTk
  11. import sys
  12.  
  13. #
  14. # an image viewer
  15.  
  16. class UI(Frame):
  17.     def __init__(self, master, im, value = 128):
  18.     Frame.__init__(self, master)
  19.  
  20.     self.image = im
  21.     self.value = value
  22.  
  23.     self.canvas = Canvas(self, width=im.size[0], height=im.size[1])
  24.     self.backdrop = ImageTk.PhotoImage(im)
  25.     self.canvas.create_image(0, 0, image=self.backdrop, anchor=NW)
  26.     self.canvas.pack()
  27.  
  28.     scale = Scale(self, orient=HORIZONTAL, from_=0, to=255,
  29.               resolution=1, command=self.update, length=256)
  30.     scale.set(value)
  31.     scale.bind("<ButtonRelease-1>", self.redraw)
  32.     scale.pack()
  33.  
  34.     # uncomment the following line for instant feedback (might
  35.     # be too slow on some platforms)
  36.     # self.redraw()
  37.  
  38.     def update(self, value):
  39.     self.value = eval(value)
  40.  
  41.     self.redraw()
  42.  
  43.     def redraw(self, event = None):
  44.  
  45.     # create overlay (note the explicit conversion to mode "1")
  46.     im = self.image.point(lambda v,t=self.value: v>=t, "1")
  47.     self.overlay = ImageTk.BitmapImage(im, foreground="green")
  48.  
  49.     # update canvas
  50.     self.canvas.delete("overlay")
  51.     self.canvas.create_image(0, 0, image=self.overlay, anchor=NW,
  52.         tags="overlay")
  53.  
  54. # --------------------------------------------------------------------
  55. # main
  56.  
  57. root = Tk()
  58.  
  59. im = Image.open(sys.argv[1])
  60.  
  61. if im.mode != "L":
  62.     im = im.convert("L")
  63.  
  64. # im.thumbnail((320,200))
  65.  
  66. UI(root, im).pack()
  67.  
  68. root.mainloop()
  69.